Refactoring and Retrofitting Design Patterns in Java Software Product Lines
نویسندگان
چکیده
A centerpiece of modern software development is refactoring. Software Product Lines (SPLs), a major software development paradigm, lack tools to refactor Java SPL codebases. X15 introduces our new set of design guidelines, techniques, and language constructs to (1) express feature-based Java SPLs using only Java custom annotations, (2) view programs of the SPL, (3) edit views, automatically propagating edits back to the SPL codebase, (4) verify refactoring preconditions are satisfied by the target program as well as all SPL programs, (5) refactor programs, automatically applying a corresponding refactoring to the SPL codebase, and (6) retrofit design patterns into the SPL codebase by executing refactoring scripts. X15 implements a core theorem on refactoring feature-based Java SPLs. Case studies apply 2,316 refactorings to retrofit 64 pattern instances in 8 public Java SPLs and show that X15 is as efficient, expressive, and scalable as a state-of-the-art feature-unaware refactoring engine.
منابع مشابه
Refactoring Delta-Oriented Product Lines to achieve Monotonicity
Delta-oriented programming (DOP) is a flexible transformational approach to implement software product lines. In delta-oriented product lines, variants are generated by applying operations contained in delta modules to a (possibly empty) base program. These operations can add, remove or modify named elements in a program (e.g., classes, methods and fields in a Java program). This paper presents...
متن کاملRefactoring Java So ware Product Lines
Refactoring is a staple of Object-Oriented (OO) program development. It should be a staple of OO Software Product Line (SPL) development too. X15 is the rst tool to support the refactoring of Java SPL codebases. X15 (1) uses Java custom annotations to encode variability in feature-based Java SPLs, (2) projects a view of a SPL product (a program that corresponds to a legal SPL con guration), and...
متن کاملAn Automated Refactoring Approach to Design Pattern-Based Program Transformations in Java Programs
Software often needs to be modified for accommodating requirements changes through the software life cycle. To deal with several accidental requirements changes related to software maintenance, a systematic and safe approach to modifying softwares is needed. The design patterns provide a high degree of design flexibility for such accidental requirements changes. In this paper, we propose an aut...
متن کاملTool Support for Complex Refactoring to Design Patterns
The abstract should summarize the contents of the paper and should Using design patterns is seen to improve the maintainability of software systems. Applying patterns often implies upfront design while agile methods rely on software architecture to emerge. We bridge this gap by applying complex refactoring towards patterns to improve software design. Complex refactorings are based on existing t...
متن کاملA Refactoring Tool for Smalltalk
Refactoring is an important part of the evolution of reusable software and frameworks. Its uses range from the seemingly trivial, such as renaming program elements, to the profound, such as retrofitting design patterns into an existing system. Despite its importance, lack of tool support forces programmers to refactor programs by hand, which can be tedious and errorprone. The Smalltalk Refactor...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2016